/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ejb.metier;
import java.io.*;
import java.util.Iterator;
import java.util.List;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.filter.Filter;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;


/**
 *
 * @author Adel Boukelt
 * Class used to comunicate with the XML
 */
public class AdminConfigXML {


    static Element racine = new Element("config");
    static  Document document = new Document(racine);
    static String url = "configLibraire.xml";
    
    /**
     * 
     * Create the file ConfigLibraire.XML
     * @param -
     * 
     */
    public static void writeFile(){    

        Element Libraire = new Element("Libraire");
        racine.addContent(Libraire);
        Element nom = new Element("nombrePages");
        nom.setText("15");
        Libraire.addContent(nom);
        Display(); 
        recordChanges(); 
    }
    
    /**
     * 
     * Display the arborescence of the document on the consol
     * @param -
     * 
     */
    static void Display()
    {
       try
       {
          //On utilise ici un affichage classique avec getPrettyFormat()
          XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
          sortie.output(document, System.out);
       }
       catch (java.io.IOException e){}
    }
    
    /**
     * 
     * Record the document with changes or create the document
     * @param -
     * 
     */
    static void recordChanges()
    {
        try
        {
           XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
           sortie.output(document, new FileOutputStream(url));
        }
        catch (java.io.IOException e){}
    }
    
    /**
     * 
     * Return authors of one book
     * @param value The value of the number of Book that are display by page
     * 
     */
    public static void setPageNumber(final int value)
    {
        SAXBuilder sxb = new SAXBuilder(); 
        try 
        { 
            //On crée un nouveau document JDOM avec en argument le fichier XML 
            document = sxb.build(new File(url)); //
            racine = document.getRootElement(); 
            Element nParent = racine.getChild("Libraire");
            nParent.getChild("nombrePages").setText(String.valueOf(value));
            recordChanges();
        } 
        catch(Exception e) 
        { 
                writeFile();
                setPageNumber(value);
        } 

    }
    
    /**
     * 
     * Return the number of books to display
     * @param -
     * @return String 
     * 
     */
    public static String getPageNumber() 
    { 
        SAXBuilder sxb = new SAXBuilder(); 
        try 
        { 
            //On crée un nouveau document JDOM avec en argument le fichier XML 
            document = sxb.build(new File(url)); 

            //On initialise un nouvel élément racine avec l'élément racine du document. 
            racine = document.getRootElement(); 

            String balise = DiplayNode("Libraire", "nombrePages"); 

        return balise; 
        } 
        catch(Exception e) 
        { 
            writeFile();

            return getPageNumber();
        } 

    } 
    
    /**
     * 
     * Return the value of the current nummber of books
     * @param bookID the ID of the book user wana see
     * @return String
     * 
     */
    private static String DiplayNode(String parent, String child) 
    { 
    String balise = "no info"; 
    //On crée une List contenant tous les noeuds d'un parent de l'Element racine 
    List listBalise = racine.getChildren(parent); 
    Iterator i = listBalise.iterator(); 
    while(i.hasNext()) 
    { 
        Element courant = (Element)i.next(); 
        balise = courant.getChild(child).getText(); 
    } 
    return balise; 
    } 
}

